An interactive voice response (IVR) system is a communications system for handling telephony calls in a telephone network (see FIG. 1). The important components of an IVR for the purposes of this description include: a voice application; a channel process for interpreting the voice application; and a signaling process for performing the telephony functions as requested by the channel process (see FIG. 2).
An application developer programs the voice application (using an application API) so that the IVR may perform a complex interaction with a caller. For example, the application may be a voice mail application for handling the receipt of a call from a caller, it does this by playing a voice prompt greeting and recording the call in a voicemail box. The application uses an application programming interface (API) that defines API commands, each API command corresponds with a process to be performed in the IVR. Each API command has API parameters that are used by the process to perform the required function. Another example of an application makes outbound call to a telephone on the network and plays pre-recorded message for the purposes of marketing.
A channel process may be one of many channel processes that can be in operation in the voice processing system; one channel process is opened for each voice channel or telephony call that is handled by the telephony voice processing. For instance, on both occasions when a call is made from and to the system, a channel process is opened. It is the channel process that interprets the application API command to make a call and the associated application API command parameters which affect the properties of the make call function; it then sends a message containing the API parameters to the signaling process requesting that a specific process is performed.
The signaling process is an IVR component written by a system developer that enables the IVR to communicate with an external communication system. For instance, to communicate with an ISDN network the IVR requires an ISDN signaling process. For each type of network that communicates with the IVR a signaling process of that type is needed. The channel process sends a message to the signaling process in a format defined by the signaling process API.
Although the embodiment is described in terms of an ISDN signaling process, the invention may also be implemented using a signaling process for an SS7 communication network or a Voice over IP network (VoIP).
The specification of a network system changes over time with improvements in the network system. This in turn leads to changes in the application API whereby the improvements to the network system can be used by the application programmer in the voice application.
The channel process is quite inflexible when it comes to extending a function in the signaling process. When the application API is extended it is necessary to both modify the channel process and the signaling process code base so that the channel process can interpret the extended function and the signaling process can process it. However, modifying both the channel process and the signaling process each time a function extension is required is tedious, leads to complications and ultimately increases the risk of a system crash due to a bug in the code. This problem is compounded in an IVR that uses a signaling library to provide the messaging between the channel process and the signaling process; the signaling library also needs modification each time an API extension is made.
A further problem occurs if the modified channel process is not backwards compatible with applications using the previous version of the API. If the syntax of the application is not understood then the channel process or the signaling process will return an error message and not perform their functions.